from django.db import models


class DateTimeModelMixin(models.Model):
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")

    # 只是封装继承使用，不需要对这个拓展模型类在MySQL当中生成实际的表
    class Meta:
        abstract = True  # 指定类为抽象模型类，不会在迁移映射中生成对应的模型表


class IsDeleteModelMixin(models.Model):
    is_delete = models.BooleanField(default=False, verbose_name="逻辑删除")

    class Meta:
        abstract = True  # 指定类为抽象模型类，不会在迁移映射中生成对应的模型表

    def delete(self, using=None, keep_parents=False):
        # 重写删除的方法，把逻辑删除的值修改为True
        self.is_delete = True
        self.save()


class ModelSetMixin(DateTimeModelMixin, IsDeleteModelMixin):
    class Meta:
        abstract = True
